// 引入mockjs
const Mock = require('mockjs')
// 获取 mock.Random 对象
const Random = Mock.Random
let Result = {
  code: 200,
  msg: '操作成功',
  data: null
}
/**
 * Mock.mock( url, post/get , function(options))；
 * url 表示需要拦截的 URL，
 * post/get 需要拦截的 Ajax 请求类型
 * 用于生成响应数据的函数
 */
// 获取登录验证码
// 获取验证码图片base64编码以及一个随机码
Mock.mock('/captcha', 'get', () => {
  Result.data = {
    token: Random.string(32), // 获取一个32位的随机字符串,
    captchaImg: Random.dataImage('120x40', '7a8g') // 生成验证码为11111的base64图片编码
  }
  return Result
})
// 获取用户信息接口
Mock.mock('/sys/userInfo', 'get', () => {
  Result.data = {
    id: '-1',
    username: 'jly',
    password: '123456',
    avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png'
  }
  return Result
})
// 登录接口
// 因为mock不认识/login?username=xxx，所以用了正则表达式
Mock.mock(RegExp('/login*'), 'post', config => {
  // 这里无法在header添加authorization，直接跳过
  console.log('mock----------------login')
  // Result.code = 400
  // Result.msg = '异常处理'
  return Result
})

Mock.mock(RegExp('/logout'), 'post', config => {
  // 这里无法在header添加authorization，直接跳过
  console.log('mock----------------logout')
  return Result
})

Mock.mock('/sys/menu/nav', 'get', () => {
  // 这里无法在header添加authorization，直接跳过
  console.log('mock----------------/sys/menu/nav')
  // 菜单json
  let nav = [
    {
      name: 'SysMangar',
      title: '系统管理',
      icon: 'el-icon-s-operation',
      path: '',
      component: '',
      children: [
        {
          name: 'SysUser',
          title: '用户管理',
          icon: 'el-icon-s-custom',
          path: '/sys/users',
          component: 'sys/User',
          children: []
        },
        {
          name: 'SysRole',
          title: '角色管理',
          icon: 'el-icon-rank',
          path: '/sys/roles',
          component: 'sys/Role',
          children: []
        },
        {
          name: 'SysMenu',
          title: '菜单管理',
          icon: 'el-icon-menu',
          path: '/sys/menus',
          component: 'sys/Menu',
          children: []
        }
      ]
    },
    {
      name: 'SysTools',
      title: '系统工具',
      icon: 'el-icon-s-tools',
      path: '',
      component: '',
      children: [
        {
          name: 'SysDict',
          title: '数字字典',
          icon: 'el-icon-s-order',
          path: '/sys/dicts',
          component: 'sys/Dict',
          children: []
        }
      ]
    }
  ]
  // 权限json
  let authoritys = ['SysUser', 'SysUser:save']
  Result.data = {
    nav: nav,
    authoritys: authoritys
  }
  return Result
})

/// ///////////// 菜单管理 ////////////////

Mock.mock('/sys/menu/list', 'get', () => {
  let menus = [
    {
      'id': 1,
      'created': '2021-01-15T18:58:18',
      'updated': '2021-01-15T18:58:20',
      'statu': 1,
      'parentId': 0,
      'name': '系统管理',
      'path': '',
      'perms': 'sys:manage',
      'component': '',
      'type': 0,
      'icon': 'el-icon-s-operation',
      'orderNum': 1,
      'children': [
        {
          'id': 2,
          'created': '2021-01-15T19:03:45',
          'updated': '2021-01-15T19:03:48',
          'statu': 1,
          'parentId': 1,
          'name': '用户管理',
          'path': '/sys/users',
          'perms': 'sys:user:list',
          'component': 'sys/User',
          'type': 1,
          'icon': 'el-icon-s-custom',
          'orderNum': 1,
          'children': [
            {
              'id': 9,
              'created': '2021-01-17T21:48:32',
              'updated': null,
              'statu': 1,
              'parentId': 2,
              'name': '添加用户',
              'path': null,
              'perms': 'sys:user:save',
              'component': null,
              'type': 2,
              'icon': null,
              'orderNum': 1,
              'children': []
            },
            {
              'id': 10,
              'created': '2021-01-17T21:49:03',
              'updated': '2021-01-17T21:53:04',
              'statu': 1,
              'parentId': 2,
              'name': '修改用户',
              'path': null,
              'perms': 'sys:user:update',
              'component': null,
              'type': 2,
              'icon': null,
              'orderNum': 2,
              'children': []
            },
            {
              'id': 11,
              'created': '2021-01-17T21:49:21',
              'updated': null,
              'statu': 1,
              'parentId': 2,
              'name': '删除用户',
              'path': null,
              'perms': 'sys:user:delete',
              'component': null,
              'type': 2,
              'icon': null,
              'orderNum': 3,
              'children': []
            },
            {
              'id': 12,
              'created': '2021-01-17T21:49:58',
              'updated': null,
              'statu': 1,
              'parentId': 2,
              'name': '分配角色',
              'path': null,
              'perms': 'sys:user:role',
              'component': null,
              'type': 2,
              'icon': null,
              'orderNum': 4,
              'children': []
            },
            {
              'id': 13,
              'created': '2021-01-17T21:50:36',
              'updated': null,
              'statu': 1,
              'parentId': 2,
              'name': '重置密码',
              'path': null,
              'perms': 'sys:user:repass',
              'component': null,
              'type': 2,
              'icon': null,
              'orderNum': 5,
              'children': []
            }
          ]
        },
        {
          'id': 3,
          'created': '2021-01-15T19:03:45',
          'updated': '2021-01-15T19:03:48',
          'statu': 1,
          'parentId': 1,
          'name': '角色管理',
          'path': '/sys/roles',
          'perms': 'sys:role:list',
          'component': 'sys/Role',
          'type': 1,
          'icon': 'el-icon-rank',
          'orderNum': 2,
          'children': []
        }

      ]
    },
    {
      'id': 5,
      'created': '2021-01-15T19:06:11',
      'updated': null,
      'statu': 1,
      'parentId': 0,
      'name': '系统工具',
      'path': '',
      'perms': 'sys:tools',
      'component': null,
      'type': 0,
      'icon': 'el-icon-s-tools',
      'orderNum': 2,
      'children': [
        {
          'id': 6,
          'created': '2021-01-15T19:07:18',
          'updated': '2021-01-18T16:32:13',
          'statu': 1,
          'parentId': 5,
          'name': '数字字典',
          'path': '/sys/dicts',
          'perms': 'sys:dict:list',
          'component': 'sys/Dict',
          'type': 1,
          'icon': 'el-icon-s-order',
          'orderNum': 1,
          'children': []
        }
      ]
    }
  ]

  Result.data = menus

  return Result
})

Mock.mock(RegExp('/sys/menu/*'), 'post', () => {
  return Result
})

/// ///////////// 角色管理 ////////////////

Mock.mock(RegExp('/sys/role/list*'), 'get', () => {
  Result.data = {
    'records': [
      {
        'id': 3,
        'created': '2021-01-04T10:09:14',
        'updated': '2021-01-30T08:19:52',
        'statu': 1,
        'name': '普通用户',
        'code': 'normal',
        'remark': '只有基本查看功能',
        'menuIds': []
      },
      {
        'id': 6,
        'created': '2021-01-16T13:29:03',
        'updated': '2021-01-17T15:50:45',
        'statu': 1,
        'name': '超级管理员',
        'code': 'admin',
        'remark': '系统默认最高权限，不可以编辑和任意修改',
        'menuIds': []
      }
    ],
    'total': 2,
    'size': 10,
    'current': 1,
    'orders': [],
    'optimizeCountSql': true,
    'hitCount': false,
    'countId': null,
    'maxLimit': null,
    'searchCount': true,
    'pages': 1
  }

  return Result
})
